package model.map;

import model.core.Renderable;
import model.entity.MovementType;

/**
 * This class defines the Terrain at a map point.
 * @author Zachary
 */
public abstract class Terrain implements Renderable {
	private String graphicID;
	
	/**
	 * Constructor for a Terrain.
	 * @param graphicID
	 */
	protected Terrain(String graphicID){
		this.graphicID = graphicID;
	}
	
	/**
	 * Returns the graphicID of this terrain.
	 */
	public String getGraphicID(){
		return this.graphicID;
	}
	
	/**
	 * This method gets the entities movement speed
	 * on a specific terrain.
	 * @param t
	 * @return
	 */
	public abstract int getSpeed(MovementType t);
	
	/**
	 * This method gets the passability of a terrain.
	 * @param t
	 * @return
	 */
	public abstract boolean isPassable(MovementType t);
}
